home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / nt / sp2i86.exe / UPDATE.INF < prev    next >
INI File  |  1994-02-01  |  40KB  |  1,254 lines

  1. ;
  2. ; KEYED SECTIONS.  These sections are provided for files where a selection
  3. ; is made from a set of files and the chosen one is copied under a generic
  4. ; name.  This can be used to update the hal.dll, ntoskrnl.exe, ntbootdd.sys,
  5. ; ntdetect.com.
  6. ;
  7.  
  8.  
  9. [FileKeyedClasses]
  10.     Hal            = hal.dll
  11.     Ntoskrnl       = ntoskrnl.exe
  12.     Ntdetect       = ntdetect.com
  13.  
  14. [FilesKeyedSections]
  15.     FilesHal       = $(STF_HALDEST)
  16.     FilesNtoskrnl  = $(STF_WINDOWSSYSPATH)
  17.     FilesNtdetect  = $(STF_OSLDEST)
  18.  
  19. [FilesHal]
  20.  
  21.     ; for x86
  22.  
  23.     hal      = 1, hal.dll      , RENAME=$(NEWFILE)
  24.     halast   = 1, halast.dll   , RENAME=$(NEWFILE)
  25.     halcbus  = 1, halcbus.dll  , RENAME=$(NEWFILE)
  26.     hal486c  = 1, hal486c.dll  , RENAME=$(NEWFILE)
  27.     halmca   = 1, halmca.dll   , RENAME=$(NEWFILE)
  28.     halncr   = 1, halncr.dll   , RENAME=$(NEWFILE)
  29.     haloli   = 1, haloli.dll   , RENAME=$(NEWFILE)
  30.     halsp    = 1, halsp.dll    , RENAME=$(NEWFILE)
  31.     halwyse7 = 1, halwyse7.dll , RENAME=$(NEWFILE)
  32.  
  33.     ; for mips
  34.  
  35.     ; hal      = 1, hal.dll      , RENAME=$(NEWFILE)
  36.     ; haldti   = 1, haldti.dll   , RENAME=$(NEWFILE)
  37.     ; halduomp = 1, halduomp.dll , RENAME=$(NEWFILE)
  38.     ; halfxs   = 1, halfxs.dll   , RENAME=$(NEWFILE)
  39.     ; halacr   = 1, halacr.dll   , RENAME=$(NEWFILE)
  40.     ; halsgi   = 1, halsgi.dll   , RENAME=$(NEWFILE)
  41.  
  42.     ; for alpha
  43.  
  44. [FilesNtoskrnl]
  45.  
  46.     ; for x86, mips, alpha
  47.  
  48.     ntoskrnl = 1, ntoskrnl.exe , RENAME=$(NEWFILE)
  49.     ntkrnlmp = 1, ntkrnlmp.exe , RENAME=$(NEWFILE)
  50.  
  51. [FilesNtdetect]
  52.  
  53.     ; for x86
  54.  
  55.     ntdetect = 1, ntdetect.com , RENAME=$(NEWFILE)
  56.  
  57.  
  58. ;
  59. ; REGULAR SECTIONS.  These sections are provided for files where the file
  60. ; just needs to be copied to a known destination.
  61. ;
  62.  
  63. [FileSections]
  64.     FilesPrimary        = C:
  65.     FilesOsLoader       = $(STF_OSLDEST)
  66.     FilesPal            = $(STF_HALDEST)
  67.     FilesWinnt          = $(STF_WINDOWSPATH)
  68.     FilesSystem32       = $(STF_WINDOWSSYSPATH)
  69.     FilesSystem         = $(STF_WINDOWSPATH)\system
  70.     FilesDrivers        = $(STF_WINDOWSSYSPATH)\drivers
  71.     FilesConfig         = $(STF_WINDOWSSYSPATH)\config
  72.     FilesWinspool       = $(STF_WINDOWSSYSPATH)\spool
  73.     FilesPrnDriver      = $(STF_WINDOWSSYSPATH)\spool\drivers\$(!STF_PRNPLATFORM)
  74.     FilesPrnProc        = $(STF_WINDOWSSYSPATH)\spool\prtprocs\$(!STF_PRNPLATFORM)
  75.     FilesDbgCom         = $(STF_WINDOWSPATH)\symbols\com
  76.     FilesDbgCpl         = $(STF_WINDOWSPATH)\symbols\cpl
  77.     FilesDbgDll         = $(STF_WINDOWSPATH)\symbols\dll
  78.     FilesDbgDrv         = $(STF_WINDOWSPATH)\symbols\drv
  79.     FilesDbgExe         = $(STF_WINDOWSPATH)\symbols\exe
  80.     FilesDbgScr         = $(STF_WINDOWSPATH)\symbols\scr
  81.     FilesDbgSys         = $(STF_WINDOWSPATH)\symbols\sys
  82.  
  83.  
  84. [FileSectionsCopyAlways]
  85.     FilesSystem32CopyAlways = $(STF_WINDOWSSYSPATH)
  86.     FilesDriversCopyAlways  = $(STF_WINDOWSSYSPATH)\drivers
  87.  
  88. ;
  89. ; product specific sections
  90. ;
  91.  
  92. [FileSectionsWINNT]
  93.     FilesInfWinnt       = $(STF_WINDOWSSYSPATH)
  94.  
  95. [FileSectionsLANMANNT]
  96.     FilesInfLanmanNT    = $(STF_WINDOWSSYSPATH)
  97.  
  98. ;
  99. ; FilesPrimary only covers ntldr.  For ntbootddd, a keyed section needs to
  100. ; be created.  Also this section is relevant only for x86.
  101. ;
  102. [FilesPrimary]
  103. ;    1 = 1, file1, RENAME=$(NEWFILE)
  104. ;    2 = 1, file2, RENAME=$(NEWFILE)
  105. 1 = 1, NTLDR, RENAME=$(NEWFILE)
  106.  
  107. ;
  108. ; FilesOsLoader only covers osloader.exe.  This is only relevant
  109. ;
  110. [FilesOsLoader]
  111. ;    1 = 1, file1, RENAME=$(NEWFILE)
  112. ;    2 = 1, file2, RENAME=$(NEWFILE)
  113.  
  114. [FilesPal]
  115. ;    1 = 1, file1, RENAME=$(NEWFILE)
  116. ;    2 = 1, file2, RENAME=$(NEWFILE)
  117.  
  118. [FilesWinnt]
  119. ;    1 = 1, file1, RENAME=$(NEWFILE)
  120. ;    2 = 1, file2, RENAME=$(NEWFILE)
  121.  
  122. [FilesSystem32]
  123. ;    1 = 1, file1, RENAME=$(NEWFILE)
  124. ;    2 = 1, file2, RENAME=$(NEWFILE)
  125. 1 = 1, ATI.DLL, RENAME=$(NEWFILE)
  126. 2 = 1, BASESRV.DLL, RENAME=$(NEWFILE)
  127. 3 = 1, CLIPBRD.EXE, RENAME=$(NEWFILE)
  128. 4 = 1, DEMIL32.DLL, RENAME=$(NEWFILE)
  129. 5 = 1, DRIVERS.DLL, RENAME=$(NEWFILE)
  130. 6 = 1, DRWTSN32.EXE, RENAME=$(NEWFILE)
  131. 7 = 1, FRAMEBUF.DLL, RENAME=$(NEWFILE)
  132. 8 = 1, GDI.EXE, RENAME=$(NEWFILE)
  133. 9 = 1, IPXROUTE.EXE, RENAME=$(NEWFILE)
  134. 10 = 1, SAMSRV.DLL, RENAME=$(NEWFILE)
  135. 11 = 1, KRNL386.EXE, RENAME=$(NEWFILE)
  136. 12 = 1, LSASRV.DLL, RENAME=$(NEWFILE)
  137. 13 = 1, LSASS.EXE, RENAME=$(NEWFILE)
  138. 14 = 1, MSPRIVS.DLL, RENAME=$(NEWFILE)
  139. 15 = 1, MSSCHD32.DLL, RENAME=$(NEWFILE)
  140. 16 = 1, NETRAP.DLL, RENAME=$(NEWFILE)
  141. 17 = 1, NTBACKUP.EXE, RENAME=$(NEWFILE)
  142. 18 = 1, NTVDM.EXE, RENAME=$(NEWFILE)
  143. 19 = 1, OS2.EXE, RENAME=$(NEWFILE)
  144. 20 = 1, PERFMON.EXE, RENAME=$(NEWFILE)
  145. 21 = 1, PORTUAS.EXE, RENAME=$(NEWFILE)
  146. 22 = 1, PROGMAN.EXE, RENAME=$(NEWFILE)
  147. 23 = 1, RASCAUTH.DLL, RENAME=$(NEWFILE)
  148. 24 = 1, RPCLTC3.DLL, RENAME=$(NEWFILE)
  149. 25 = 1, RPCLTC6.DLL, RENAME=$(NEWFILE)
  150. 26 = 1, RPCRT4.DLL, RENAME=$(NEWFILE)
  151. 27 = 1, SFMMON.DLL, RENAME=$(NEWFILE)
  152. 28 = 1, SFMPRINT.EXE, RENAME=$(NEWFILE)
  153. 29 = 1, TCPIPSVC.DLL, RENAME=$(NEWFILE)
  154. 30 = 1, TELNET.DLL, RENAME=$(NEWFILE)
  155. 31 = 1, TERMINAL.EXE, RENAME=$(NEWFILE)
  156. 32 = 1, UPS.EXE, RENAME=$(NEWFILE)
  157. 33 = 1, WINMSD.EXE, RENAME=$(NEWFILE)
  158. 34 = 1, WINMSDP.EXE, RENAME=$(NEWFILE)
  159. 35 = 1, SAMLIB.DLL, RENAME=$(NEWFILE)
  160. 36 = 1, WINSRV.DLL, RENAME=$(NEWFILE)
  161. 37 = 1, WINVER.EXE, RENAME=$(NEWFILE)
  162. 38 = 1, XACTSRV.DLL, RENAME=$(NEWFILE)
  163. 39 = 1, WOW32.DLL, RENAME=$(NEWFILE)
  164. 40 = 1, WSOCK32.DLL, RENAME=$(NEWFILE)
  165. 41 = 1, DGCONFIG.DLL, RENAME=$(NEWFILE)
  166. 42 = 1, LOCALSPL.DLL, RENAME=$(NEWFILE)
  167. 43 = 1, SFMWSHAT.DLL, RENAME=$(NEWFILE)
  168. 44 = 1, USER32.DLL, RENAME=$(NEWFILE)
  169. 45 = 1, FTPSVC.EXE, RENAME=$(NEWFILE)
  170. 46 = 1, AUTOCONV.EXE, RENAME=$(NEWFILE)
  171. 47 = 1, IFSUTIL.DLL, RENAME=$(NEWFILE)
  172. 48 = 1, AUTOCHK.EXE, RENAME=$(NEWFILE)
  173. 49 = 1, ACLCONV.EXE, RENAME=$(NEWFILE)
  174. 50 = 1, DOSX.EXE, RENAME=$(NEWFILE)
  175. 51 = 1, EVENTLOG.EXE, RENAME=$(NEWFILE)
  176. 52 = 1, GDI32.DLL, RENAME=$(NEWFILE)
  177. 53 = 1, KBDPO.DLL, RENAME=$(NEWFILE)
  178. 54 = 1, KERNEL32.DLL, RENAME=$(NEWFILE)
  179. 55 = 1, LMUICMN1.DLL, RENAME=$(NEWFILE)
  180. 56 = 1, MUSRMGR.EXE, RENAME=$(NEWFILE)
  181. 57 = 1, NCPA.CPL, RENAME=$(NEWFILE)
  182. 58 = 1, NETLOGON.DLL, RENAME=$(NEWFILE)
  183. 59 = 1, NTDLL.DLL, RENAME=$(NEWFILE)
  184. 60 = 1, REDIR.EXE, RENAME=$(NEWFILE)
  185. 61 = 1, S3.DLL, RENAME=$(NEWFILE)
  186. 62 = 1, SCREG.EXE, RENAME=$(NEWFILE)
  187. 63 = 1, SHELL32.DLL, RENAME=$(NEWFILE)
  188. 64 = 1, SRVSVC.DLL, RENAME=$(NEWFILE)
  189. 65 = 1, UFAT.DLL, RENAME=$(NEWFILE)
  190. 66 = 1, UNTFS.DLL, RENAME=$(NEWFILE)
  191. 67 = 1, USER.EXE, RENAME=$(NEWFILE)
  192. 68 = 1, USRMGR.EXE, RENAME=$(NEWFILE)
  193. 69 = 1, WIN32SPL.DLL, RENAME=$(NEWFILE)
  194. 70 = 1, WINDISK.EXE, RENAME=$(NEWFILE)
  195. 71 = 1, WINFILE.EXE, RENAME=$(NEWFILE)
  196. 72 = 1, WINLOGON.EXE, RENAME=$(NEWFILE)
  197. 73 = 1, NETAPI32.DLL, RENAME=$(NEWFILE)
  198. 74 = 1, LMUICMN0.DLL, RENAME=$(NEWFILE)
  199. 75 = 1, SFMSVC.EXE, RENAME=$(NEWFILE)
  200. 76 = 1, UHPFS.DLL, RENAME=$(NEWFILE)
  201. 77 = 1, OS2SRV.EXE, RENAME=$(NEWFILE)
  202. 78 = 1, KB16.COM, RENAME=$(NEWFILE)
  203.  
  204. [FilesSystem]
  205. ;    1 = 1, file1, RENAME=$(NEWFILE)
  206. ;    2 = 1, file2, RENAME=$(NEWFILE)
  207.  
  208. [FilesDrivers]
  209. ;    1 = 1, file1, RENAME=$(NEWFILE)
  210. ;    2 = 1, file2, RENAME=$(NEWFILE)
  211. 1 = 1, BROWSER.SYS, RENAME=$(NEWFILE)
  212. 2 = 1, CDFS.SYS, RENAME=$(NEWFILE)
  213. 3 = 1, ELNK16.SYS, RENAME=$(NEWFILE)
  214. 4 = 1, ELNKII.SYS, RENAME=$(NEWFILE)
  215. 5 = 1, ELNKMC.SYS, RENAME=$(NEWFILE)
  216. 6 = 1, FTDISK.SYS, RENAME=$(NEWFILE)
  217. 7 = 1, IBMTOK.SYS, RENAME=$(NEWFILE)
  218. 8 = 1, LANCE.SYS, RENAME=$(NEWFILE)
  219. 9 = 1, MUP.SYS, RENAME=$(NEWFILE)
  220. 10 = 1, MVAUDIO.SYS, RENAME=$(NEWFILE)
  221. 11 = 1, NBF.SYS, RENAME=$(NEWFILE)
  222. 12 = 1, NBT.SYS, RENAME=$(NEWFILE)
  223. 13 = 1, NCR77C22.SYS, RENAME=$(NEWFILE)
  224. 14 = 1, NCRC710.SYS, RENAME=$(NEWFILE)
  225. 15 = 1, NDIS.SYS, RENAME=$(NEWFILE)
  226. 16 = 1, NE3200.SYS, RENAME=$(NEWFILE)
  227. 17 = 1, NPFS.SYS, RENAME=$(NEWFILE)
  228. 18 = 1, NTFS.SYS, RENAME=$(NEWFILE)
  229. 19 = 1, PROTEON.SYS, RENAME=$(NEWFILE)
  230. 20 = 1, RDR.SYS, RENAME=$(NEWFILE)
  231. 21 = 1, SCSIDISK.SYS, RENAME=$(NEWFILE)
  232. 22 = 1, SCSIPORT.SYS, RENAME=$(NEWFILE)
  233. 23 = 1, SFMATALK.SYS, RENAME=$(NEWFILE)
  234. 24 = 1, SFMSRV.SYS, RENAME=$(NEWFILE)
  235. 25 = 1, SRV.SYS, RENAME=$(NEWFILE)
  236. 26 = 1, TCPIP.SYS, RENAME=$(NEWFILE)
  237. 27 = 1, UBNEI.SYS, RENAME=$(NEWFILE)
  238. 28 = 1, WDVGA.SYS, RENAME=$(NEWFILE)
  239. 29 = 1, 4MMDAT.SYS, RENAME=$(NEWFILE)
  240. 30 = 1, ARCHQIC.SYS, RENAME=$(NEWFILE)
  241. 31 = 1, DIGIFEP5.SYS, RENAME=$(NEWFILE)
  242. 32 = 1, NTCX.SYS, RENAME=$(NEWFILE)
  243. 33 = 1, NTXALL.SYS, RENAME=$(NEWFILE)
  244. 34 = 1, NTXEM.SYS, RENAME=$(NEWFILE)
  245. 35 = 1, S3.SYS, RENAME=$(NEWFILE)
  246. 36 = 1, ABIOSDSK.SYS, RENAME=$(NEWFILE)
  247. 37 = 1, ASYNCMAC.SYS, RENAME=$(NEWFILE)
  248. 38 = 1, CPQARRAY.SYS, RENAME=$(NEWFILE)
  249. 39 = 1, DLC.SYS, RENAME=$(NEWFILE)
  250. 40 = 1, DPTSCSI.SYS, RENAME=$(NEWFILE)
  251. 41 = 1, NETFLX.SYS, RENAME=$(NEWFILE)
  252. 42 = 1, SERMOUSE.SYS, RENAME=$(NEWFILE)
  253. 43 = 1, STREAMS.SYS, RENAME=$(NEWFILE)
  254. 44 = 1, SERIAL.SYS, RENAME=$(NEWFILE)
  255. 45 = 1, ATDISK.SYS, RENAME=$(NEWFILE)
  256. 46 = 1, ARROW.SYS, RENAME=$(NEWFILE)
  257.  
  258. [FilesConfig]
  259. ;    1 = 1, file1, RENAME=$(NEWFILE)
  260. ;    2 = 1, file2, RENAME=$(NEWFILE)
  261.  
  262. [FilesWinspool]
  263. ;    1 = 1, file1, RENAME=$(NEWFILE)
  264. ;    2 = 1, file2, RENAME=$(NEWFILE)
  265. 1 = 1, WINSPOOL.DRV, RENAME=$(NEWFILE)
  266.  
  267. [FilesPrnDriver]
  268. ;    1 = 1, file1, RENAME=$(NEWFILE)
  269. ;    2 = 1, file2, RENAME=$(NEWFILE)
  270. 1 = 1, HPDSKJET.DLL, RENAME=$(NEWFILE)
  271. 2 = 1, JP350.DLL, RENAME=$(NEWFILE)
  272. 3 = 1, PSCRIPT.DLL, RENAME=$(NEWFILE)
  273. 4 = 1, PSCRPTUI.DLL, RENAME=$(NEWFILE)
  274.  
  275. [FilesPrnProc]
  276. ;    1 = 1, file1, RENAME=$(NEWFILE)
  277. ;    2 = 1, file2, RENAME=$(NEWFILE)
  278.  
  279. [FilesDbgCom]
  280. ;    1 = 1, file1, RENAME=$(NEWFILE)
  281. ;    2 = 1, file2, RENAME=$(NEWFILE)
  282.  
  283. [FilesDbgCpl]
  284. ;    1 = 1, file1, RENAME=$(NEWFILE)
  285. ;    2 = 1, file2, RENAME=$(NEWFILE)
  286.  
  287. [FilesDbgDll]
  288. ;    1 = 1, file1, RENAME=$(NEWFILE)
  289. ;    2 = 1, file2, RENAME=$(NEWFILE)
  290.  
  291. [FilesDbgDrv]
  292. ;    1 = 1, file1, RENAME=$(NEWFILE)
  293. ;    2 = 1, file2, RENAME=$(NEWFILE)
  294.  
  295. [FilesDbgExe]
  296. ;    1 = 1, file1, RENAME=$(NEWFILE)
  297. ;    2 = 1, file2, RENAME=$(NEWFILE)
  298.  
  299. [FilesDbgScr]
  300. ;    1 = 1, file1, RENAME=$(NEWFILE)
  301. ;    2 = 1, file2, RENAME=$(NEWFILE)
  302.  
  303. [FilesDbgSys]
  304. ;    1 = 1, file1, RENAME=$(NEWFILE)
  305. ;    2 = 1, file2, RENAME=$(NEWFILE)
  306.  
  307. [FilesInfWinnt]
  308. ;    1 = 1, file1, RENAME=$(NEWFILE)
  309. ;    2 = 1, file2, RENAME=$(NEWFILE)
  310. 1 = 1, OEMNADLM.INF, RENAME=$(NEWFILE)
  311. 2 = 1, OEMNADLT.INF, RENAME=$(NEWFILE)
  312. 3 = 1, OEMNXPSM.INF, RENAME=$(NEWFILE)
  313. 4 = 1, OEMNADDS.INF, RENAME=$(NEWFILE)
  314.  
  315. [FilesInfLanmanNT]
  316. ;    1 = 1, file1, RENAME=$(NEWFILE)
  317. ;    2 = 1, file2, RENAME=$(NEWFILE)
  318. 1 = 1, OEMNADLM.INF, RENAME=$(NEWFILE)
  319. 2 = 1, OEMNADLT.INF, RENAME=$(NEWFILE)
  320. 3 = 1, OEMNXPSM.INF, RENAME=$(NEWFILE)
  321. 4 = 1, OEMNADDS.INF, RENAME=$(NEWFILE)
  322.  
  323. [FilesSystem32CopyAlways]
  324. ;    1 = 1, file1, RENAME=$(NEWFILE)
  325. ;    2 = 1, file2, RENAME=$(NEWFILE)
  326.  
  327. [FilesDriversCopyAlways]
  328. ;    1 = 1, file1, RENAME=$(NEWFILE)
  329. ;    2 = 1, file2, RENAME=$(NEWFILE)
  330.  
  331.  
  332. [ProcessorID]
  333.     ProcessorID_I386  = I386
  334.     ProcessorID_I486  = I486
  335.     ProcessorID_I586  = I586
  336.     ProcessorID_R4000 = R4000
  337.  
  338. [UiVars]
  339.     STF_PLATFORMDET    = "" ? $(!LIBHANDLE) GetPlatform
  340.     STF_CSDVER         = 512
  341.     STF_BUILDVER       = 528
  342.  
  343.     STF_PRIMARY        = "C:"
  344.     STF_NTDRIVE        = ""
  345.     STF_WINDOWSPATH    = "" ? $(!LIBHANDLE) GetWindowsNtDir
  346.     STF_WINDOWSSYSPATH = "" ? $(!LIBHANDLE) GetWindowsNtSysDir
  347.     STF_CONTROLSET     = CurrentControlSet
  348.     VolumeList         = {} ? $(!LIBHANDLE) GetHardDriveLetters
  349.     VolumeFSList       = {} ? $(!LIBHANDLE) GetHardDriveFileSystems
  350.     VolumeFreeList     = {} ? $(!LIBHANDLE) GetHardDriveFreeSpace
  351.     DisketteList       = {} ? $(!LIBHANDLE) GetFloppyDriveLetters
  352.  
  353.     ;
  354.     ; Amount of free space (in MB) required on the winnt drive
  355.     ; before we'll do the upgrade patch.
  356.     ;
  357. [FreeSpaceI386]
  358.     RequiredFreeWinnt  = 25
  359. [FreeSpaceMips]
  360.     RequiredFreeWinnt  = 32
  361. [FreeSpaceAlpha]
  362.     RequiredFreeWinnt  = 27
  363.  
  364.  
  365. [NVRAMVars]
  366.     SystemPartition = "" ? $(!LIBHANDLE) GetNVRAMVar SYSTEMPARTITION
  367.     OsLoader        = "" ? $(!LIBHANDLE) GetNVRAMVar OSLOADER
  368.     OsLoadPartition = "" ? $(!LIBHANDLE) GetNVRAMVar OSLOADPARTITION
  369.     OsLoadFilename  = "" ? $(!LIBHANDLE) GetNVRAMVar OSLOADFILENAME
  370.  
  371. ;
  372. ; INF LOGIC
  373. ;
  374.  
  375. [Shell Commands]
  376.  
  377.     set-title "Windows NT Setup"
  378.     set-subst CR = "\r"
  379.     set-subst LF = "\n"
  380.     set STF_LANGUAGE = ENG
  381.     read-syms Strings
  382.     shell "subroutn.inf" PushBillboard STATUSDLG $(Billboard1)
  383.     set BillboardPushed = TRUE
  384.  
  385.     set !LIBHANDLE      = ""
  386.     set !PATCHLIBHANDLE = ""
  387.  
  388.     ;
  389.     ; Initialize Library support for the inf
  390.     ;
  391.  
  392.     install   LoadSetupLibrary
  393.  
  394.     ;
  395.     ; find out the essential information about the installed hardware and
  396.     ; software
  397.     ;
  398.  
  399.     read-syms ProductType
  400.     ifstr(i) $(!STF_PLATFORM) == I386
  401.         set STF_PRNPLATFORM = "w32x86"
  402.     else-ifstr(i) $(!STF_PLATFORM) == Mips
  403.         set STF_PRNPLATFORM = "w32mips"
  404.     else-ifstr(i) $(!STF_PLATFORM) == Alpha
  405.         set STF_PRNPLATFORM = "w32alpha"
  406.     endif
  407.  
  408.     read-syms UiVars
  409.     detect    UiVars
  410.     read-syms FreeSpace$(!STF_PLATFORM)
  411.  
  412.     ;
  413.     ; if the Platform is not the same as the one supported by this patch
  414.     ; diskette, inform the user and quit
  415.     ;
  416.     ifstr(i) $(STF_PLATFORM) != $(STF_PLATFORMDET)
  417.          ifstr(i) $(BillboardPushed) == TRUE
  418.              shell "subroutn.inf" PopBillboard
  419.              set BillboardPushed = FALSE
  420.          endif
  421.          shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "FATAL" $(String1)
  422.          goto patchnotdone
  423.     endif
  424.  
  425.     ;
  426.     ; Check to make sure we have admin privileges, if not print fatal error
  427.     ;
  428.  
  429.     shell "registry.inf" CheckSetupModify
  430.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  431.         ; DEBUG
  432.         ;
  433.         ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Failed to shell CheckSetupModify"
  434.         ;
  435.         ; DEBUG END
  436.         ifstr(i) $(BillboardPushed) == TRUE
  437.             shell "subroutn.inf" PopBillboard
  438.             set BillboardPushed = FALSE
  439.         endif
  440.  
  441.         Debug-Output "shelling CheckSetupModify failed"
  442.         goto patchnotdone
  443.     else-ifstr(i) $($R0) != STATUS_SUCCESSFUL
  444.         ifstr(i) $(BillboardPushed) == TRUE
  445.             shell "subroutn.inf" PopBillboard
  446.             set BillboardPushed = FALSE
  447.         endif
  448.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String4)
  449.         goto patchnotdone
  450.     endif
  451.  
  452.  
  453.     ;
  454.     ; Initialize the patch library support for the inf
  455.     ;
  456.  
  457.     install   LoadPatchLibrary
  458.  
  459.  
  460.     ;
  461.     ; Get the build and patch version for the system.  If this is more than our patch
  462.     ; version warn the user, allowing him to exit
  463.     ;
  464.  
  465.     LibraryProcedure STATUS,$(!PATCHLIBHANDLE), CheckBuildVersion $(!STF_BUILDVER)
  466.     ifstr(i) $(STATUS) == ERROR
  467.         goto patchnotdone
  468.     else-ifstr(i) $(STATUS) == NO
  469.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) WARNING $(String8)
  470.         ifstr(i) $($R1) == "OK"
  471.             goto skip_patchvercheck
  472.         else
  473.             goto patchnotdone
  474.         endif
  475.     endif
  476.  
  477.     shell "" GetCSDVersion
  478.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  479.         ifstr(i) $(BillboardPushed) == TRUE
  480.             shell "subroutn.inf" PopBillboard
  481.             set BillboardPushed = FALSE
  482.         endif
  483.         Debug-Output "PATCH.INF: Shelling GetCSDVersion failed"
  484.         goto patchnotdone
  485.     endif
  486.  
  487.     ifstr(i) $($R0) != "STATUS_SUCCESSFUL"
  488.         Debug-Output "PATCH.INF: GetCSDVersion failed to return a value"
  489.     else
  490.         ifint $($R1) > $(!STF_CSDVER)
  491.             ifstr(i) $(BillboardPushed) == TRUE
  492.                 shell "subroutn.inf" PopBillboard
  493.                 set BillboardPushed = FALSE
  494.             endif
  495.             shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) WARNING $(String8)
  496.             ifstr(i) $($R1) == "OK"
  497.             else
  498.                 goto patchnotdone
  499.             endif
  500.         endif
  501.     endif
  502.  
  503. skip_patchvercheck = +
  504.  
  505.     ;
  506.     ; Get the NT DRIVE
  507.     ;
  508.  
  509.     GetDriveInPath !STF_NTDRIVE $(!STF_WINDOWSSYSPATH)
  510.  
  511.     ;
  512.     ; Check for enough disk space.
  513.     ;
  514.  
  515.     ifint *($(VolumeFreeList), ~($(VolumeList), $(!STF_NTDRIVE))) < $(RequiredFreeWinnt)
  516.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String13a)$(RequiredFreeWinnt)$(String13b)$(!STF_NTDRIVE)$(String13c)
  517.         goto patchnotdone
  518.     endif
  519.  
  520.     ;
  521.     ; get the product type we are running on
  522.     ;
  523.  
  524.     set STF_PRODUCT = ""
  525.     OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Control\ProductOptions" 33554432 KeyProductOption
  526.     ifstr(i) $(KeyProductOption) != ""
  527.         GetRegValue $(KeyProductOption) "ProductType" ProductTypeList
  528.         set TempProductType = *($(ProductTypeList),4)
  529.         ifstr(i) $(TempProductType) == "winnt"
  530.             set !STF_PRODUCT = WINNT
  531.             set !PRODUCT_DIR = WINNT
  532.         else-ifstr(i) $(TempProductType) == "lanmannt"
  533.             set !STF_PRODUCT = LANMANNT
  534.             set !PRODUCT_DIR = NTAS
  535.         endif
  536.         CloseRegKey $(KeyProductOptions)
  537.     endif
  538.  
  539.     ;
  540.     ; if we are unable to determine the product type print error and exit
  541.     ;
  542.  
  543.     ifstr(i) $(STF_PRODUCT) == ""
  544.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String14)
  545.         goto patchnotdone
  546.     endif
  547.  
  548.     ;
  549.     ; Find the hal and osloader destination on Mips and Alpha
  550.     ;
  551.  
  552.     ifstr(i) $(!STF_PLATFORM) == I386
  553.         set STF_HALDEST = $(!STF_WINDOWSSYSPATH)
  554.         set STF_OSLDEST = C:\
  555.  
  556.     else
  557.  
  558.         read-syms NVRAMVars
  559.         detect    NVRAMVars
  560.         LibraryProcedure STATUS,$(!PATCHLIBHANDLE), GetOsLoaderDest         +
  561.                                                          $(SystemPartition) +
  562.                                                          $(OsLoader)        +
  563.                                                          $(OsLoadPartition) +
  564.                                                          $(OsLoadFilename)
  565.         ifstr(i) $(STATUS) == ERROR
  566.             goto patchnotdone
  567.         else
  568.             set STF_OSLDEST = $(STATUS)
  569.             set STF_HALDEST = $(STATUS)
  570.         endif
  571.     endif
  572.  
  573.     ;
  574.     ; Get the required information about keyed files
  575.     ;
  576.  
  577.     set KeyedClassKeys  = ^(FileKeyedClasses, 0)
  578.     set KeyedClassFiles = ^(FileKeyedClasses, 1)
  579.  
  580.     LibraryProcedure STATUS,$(!PATCHLIBHANDLE), GetFileTypes $(KeyedClassFiles)
  581.     ifstr(i) $(STATUS) == ERROR
  582.         goto patchnotdone
  583.     else-ifstr(i) $(STATUS) == SETUPLOGNOTPRESENT
  584.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String11)
  585.         goto patchnotdone
  586.     else
  587.         ForListDo $(KeyedClassKeys)
  588.             set $($)Type = *($(STATUS), $(#))
  589.         EndForListDo
  590.     endif
  591.  
  592.     ;
  593.     ; Warn the user about the patch process..
  594.     ;
  595.  
  596.     ifstr(i) $(BillboardPushed) == TRUE
  597.         shell "subroutn.inf" PopBillboard
  598.         set BillboardPushed = FALSE
  599.     endif
  600.  
  601.     shell "" QueryOkCancel $(String9)
  602.     ifstr(i) $($R1) == "OK"
  603.     else
  604.         set String = $(String12)
  605.         goto finish2
  606.     endif
  607.  
  608.     shell "subroutn.inf" PushBillboard STATUSDLG $(Billboard2)
  609.     set BillboardPushed = TRUE
  610.  
  611.     ;
  612.     ; initialize copy
  613.     ;
  614.  
  615.     set MoveFileExList  = {}
  616.  
  617.  
  618.     ;
  619.     ; Run through the directory list adding files to the copy list
  620.     ;
  621.  
  622.     read-syms FileSections
  623.     set FileSectionsList = ^(FileSections, 0)
  624.     set FileSource  = $(!STF_SRCDIR)
  625.  
  626.     ForListDo $(FileSectionsList)
  627.         set FileSection = $($)
  628.         set FileDest    = $($($))
  629.         set FileList    = ^($(FileSection), 0)
  630.         ForListDo $(FileList)
  631.             set FileKey = $($)
  632.             set File    = #($(FileSection), $(FileKey), 2)
  633.             set FileDestFullPath = $(FileDest)\$(File)
  634.  
  635.             ;
  636.             ; Check to see if file exists, if it is does not exist, it doesn't
  637.             ; need to be copied over
  638.  
  639.             LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
  640.             ifstr(i) $(STATUS) == YES
  641.  
  642.  
  643.                 ; DEBUG
  644.                 ;
  645.                 ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Examining to see if file opened excl: "$(FileDestFullPath)
  646.                 ;
  647.                 ; DEBUG END
  648.  
  649.                 LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath)
  650.                 ifstr(i) $(STATUS) == ERROR
  651.                     goto patchnotdone
  652.                 else
  653.                     ifstr(i) $(STATUS) == "YES"
  654.                         LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest)
  655.                         ifstr(i) $(NEWFILE) == ERROR
  656.                             goto patchnotdone
  657.                         else
  658.                             set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)}
  659.  
  660.                             ; DEBUG
  661.                             ;
  662.                             ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Adding to movefile ex list: "$(FileComp)
  663.                             ;
  664.                             ; DEBUG END
  665.  
  666.                             set MoveFileExList = >($(MoveFileExList), $(FileComp))
  667.                         endif
  668.                     else
  669.                         set NEWFILE = $(File)
  670.                     endif
  671.  
  672.                     ; DEBUG
  673.                     ;
  674.                     ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Copying File Section: "$(FileSection)" : Key: "$(FileKey)" Source: "$(FileSource)" Dest: "$(FileDest)" rename = "$(NEWFILE)
  675.                     ;
  676.                     ; DEBUG END
  677.  
  678.                     install Install-File
  679.  
  680.                 endif
  681.             endif
  682.         EndForListDo
  683.     EndForListDO
  684.  
  685.     ;
  686.     ; Add the keyed sections to the copy list
  687.     ;
  688.  
  689.     read-syms FilesKeyedSections
  690.     set FileSource  = $(!STF_SRCDIR)
  691.     ForListDo $(KeyedClassKeys)
  692.         set FileSection = Files$($)
  693.         set FileDest    = $($(FileSection))
  694.         set FileKey     = $($($)Type)
  695.  
  696.         set KeyedClassChoices = ^(Files$($), 0)
  697.         ifcontains(i) $(FileKey) in $(KeyedClassChoices)
  698.             set File             = #(FileKeyedClasses, $($), 1)
  699.             set FileDestFullPath = $(FileDest)\$(File)
  700.             ;
  701.             ; Check to see if file exists, if it is does not exist, it doesn't
  702.             ; need to be copied over
  703.  
  704.             LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
  705.             ifstr(i) $(STATUS) == YES
  706.  
  707.  
  708.                 ; DEBUG
  709.                 ;
  710.                 ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Examining to see if file opened excl: "$(FileDestFullPath)
  711.                 ;
  712.                 ; DEBUG END
  713.  
  714.                 LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath)
  715.                 ifstr(i) $(STATUS) == ERROR
  716.                     goto patchnotdone
  717.                 else
  718.                     ifstr(i) $(STATUS) == "YES"
  719.                         LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest)
  720.                         ifstr(i) $(NEWFILE) == ERROR
  721.                             goto patchnotdone
  722.                         else
  723.                             set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)}
  724.  
  725.                             ; DEBUG
  726.                             ;
  727.                             ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Adding to movefile ex list: "$(FileComp)
  728.                             ;
  729.                             ; DEBUG END
  730.  
  731.                             set MoveFileExList = >($(MoveFileExList), $(FileComp))
  732.                         endif
  733.                     else
  734.                         set NEWFILE = $(File)
  735.                     endif
  736.  
  737.                     ; DEBUG
  738.                     ;
  739.                     ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Copying File Section: "$(FileSection)" : Key: "$(FileKey)" Source: "$(FileSource)" Dest: "$(FileDest)" rename = "$(NEWFILE)
  740.                     ;
  741.                     ; DEBUG END
  742.  
  743.                     install Install-File
  744.  
  745.                 endif
  746.             endif
  747.  
  748.  
  749.  
  750.         endif
  751.     EndForListDo
  752.  
  753.     ;
  754.     ; add product specific files to the copy list
  755.     ;
  756.  
  757.     read-syms FileSections$(STF_PRODUCT)
  758.     set FileSectionsList = ^(FileSections$(STF_PRODUCT), 0)
  759.     set FileSource  = $(!STF_SRCDIR)$(PRODUCT_DIR)
  760.     ForListDo $(FileSectionsList)
  761.         set FileSection = $($)
  762.         set FileDest    = $($($))
  763.         set FileList    = ^($(FileSection), 0)
  764.         ForListDo $(FileList)
  765.             set FileKey = $($)
  766.             set File    = #($(FileSection), $(FileKey), 2)
  767.             set FileDestFullPath = $(FileDest)\$(File)
  768.  
  769.             ;
  770.             ; Check to see if file exists, if it is does not exist, it doesn't
  771.             ; need to be copied over
  772.  
  773.             LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
  774.             ifstr(i) $(STATUS) == YES
  775.  
  776.  
  777.                 ; DEBUG
  778.                 ;
  779.                 ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Examining to see if file opened excl: "$(FileDestFullPath)
  780.                 ;
  781.                 ; DEBUG END
  782.  
  783.                 LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath)
  784.                 ifstr(i) $(STATUS) == ERROR
  785.                     goto patchnotdone
  786.                 else
  787.                     ifstr(i) $(STATUS) == "YES"
  788.                         LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest)
  789.                         ifstr(i) $(NEWFILE) == ERROR
  790.                             goto patchnotdone
  791.                         else
  792.                             set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)}
  793.  
  794.                             ; DEBUG
  795.                             ;
  796.                             ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Adding to movefile ex list: "$(FileComp)
  797.                             ;
  798.                             ; DEBUG END
  799.  
  800.                             set MoveFileExList = >($(MoveFileExList), $(FileComp))
  801.                         endif
  802.                     else
  803.                         set NEWFILE = $(File)
  804.                     endif
  805.  
  806.                     ; DEBUG
  807.                     ;
  808.                     ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Copying File Section: "$(FileSection)" : Key: "$(FileKey)" Source: "$(FileSource)" Dest: "$(FileDest)" rename = "$(NEWFILE)
  809.                     ;
  810.                     ; DEBUG END
  811.  
  812.                     install Install-File
  813.  
  814.                 endif
  815.             endif
  816.         EndForListDo
  817.     EndForListDO
  818.  
  819.  
  820.     ifstr(i) $(BillboardPushed) == TRUE
  821.         shell "subroutn.inf" PopBillboard
  822.         set BillboardPushed = FALSE
  823.     endif
  824.  
  825.     ;
  826.     ; add the files which are always copied
  827.     ;
  828.     read-syms FileSectionsCopyAlways
  829.     set FileSectionsList = ^(FileSectionsCopyAlways, 0)
  830.     set FileSource  = $(!STF_SRCDIR)
  831.  
  832.     ForListDo $(FileSectionsList)
  833.         set FileSection = $($)
  834.         set FileDest    = $($($))
  835.         set FileList    = ^($(FileSection), 0)
  836.         ForListDo $(FileList)
  837.             set FileKey = $($)
  838.             set File    = #($(FileSection), $(FileKey), 2)
  839.             set NEWFILE = $(File)
  840.             set FileDestFullPath = $(FileDest)\$(File)
  841.             install Install-File
  842.         EndForListDo
  843.     EndForListDO
  844.  
  845.     ;
  846.     ; Do the copy
  847.     ;
  848.  
  849.     read-syms ProgressCopy$(!STF_LANGUAGE)
  850.     install   Install-DoCopy
  851.     ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_USERQUIT"
  852.         goto patchnotdone
  853.     else-ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_FAILURE"
  854.         goto patchnotdone
  855.     endif
  856.  
  857. processmovefileex=+
  858.     ;
  859.     ; Process MoveFileExList
  860.     ;
  861.  
  862.     ForListDo $(MoveFileExList)
  863.         ;
  864.         set ExistingPath = *($($), 1)
  865.         set NewPath      = *($($), 2)
  866.  
  867.         ; DEBUG
  868.         ;
  869.         ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "CopyFileOnReboot "$(ExistingPath)" to "$(NewPath)
  870.         ;
  871.         ; DEBUG END
  872.  
  873.         LibraryProcedure STATUS, $(!PATCHLIBHANDLE), CopyFileOnReboot $(ExistingPath) $(NewPath)
  874.         ifstr(i) $(STATUS) == ERROR
  875.             goto patchnotdone
  876.         endif
  877.     EndForListDo
  878.  
  879.  
  880. patchdone =+
  881.     ifstr(i) $(BillboardPushed) == TRUE
  882.         shell "subroutn.inf" PopBillboard
  883.         set BillboardPushed = FALSE
  884.     endif
  885.  
  886.     ;
  887.     ; do the registry modifications needed
  888.     ;
  889.  
  890.     shell "" DoRegistryModifications $(!STF_CSDVER)
  891.     read-syms SetupDoneDlg$(!STF_LANGUAGE)
  892.     ui start "SetupDone"
  893.     ifstr(i) $(DLGEVENT) == "CONTINUE"
  894.         ui pop 1
  895.         goto rebootend
  896.     else
  897.         ui pop 1
  898.         goto finish1
  899.     endif
  900.  
  901. patchnotdone =+
  902.     set String = $(String2)
  903. finish2 =+
  904.     ifstr(i) $(BillboardPushed) == TRUE
  905.         shell "subroutn.inf" PopBillboard
  906.         set BillboardPushed = FALSE
  907.     endif
  908.  
  909.     shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "FATAL" $(String)
  910.     goto finish1
  911.  
  912. finish1 =+
  913.     ;
  914.     ; Free the library support
  915.     ;
  916.  
  917.     install   FreeSetupLibrary
  918.  
  919. finish =+
  920.  
  921.     install   FreePatchLibrary
  922.     exit
  923.  
  924. rebootend =+
  925.     set Reboot = YES
  926.     install   Install-Shutdown
  927.     goto finish1
  928.     exit
  929.  
  930.  
  931. ;-----------------------------------------------------------------------
  932. ; INSTALL HELPERS
  933. ;-----------------------------------------------------------------------
  934.  
  935. [LoadPatchLibrary]
  936.     LoadLibrary "x" patchdll.dll !PATCHLIBHANDLE
  937.     exit
  938.  
  939. [FreePatchLibrary]
  940.     ifstr(i) $(!PATCHLIBHANDLE) != ""
  941.         FreeLibrary $(!PATCHLIBHANDLE)
  942.     endif
  943.     exit
  944.  
  945. [LoadSetupLibrary]
  946.     LoadLibrary "x" $(!STF_CWDDIR)setupdll.dll !LIBHANDLE
  947.     exit
  948.  
  949. [FreeSetupLibrary]
  950.     ifstr(i) $(!LIBHANDLE) != ""
  951.         FreeLibrary $(!LIBHANDLE)
  952.     endif
  953.     exit
  954.  
  955. [Install-File]
  956.     set STF_VITAL = ""
  957.     AddSectionKeyFileToCopyList $(FileSection) $(FileKey) $(FileSource) $(FileDest)
  958.     exit
  959.  
  960. [Install-DoCopy]
  961.     CopyFilesInCopyList
  962.     exit
  963.  
  964.  
  965. [Install-Shutdown]
  966.     ;
  967.     LibraryProcedure STATUS,$(!LIBHANDLE),ShutdownSystem $(Reboot)
  968.     exit
  969.  
  970. ;-----------------------------------------------------------------------
  971. ; REGISTRY SUBROUTINES
  972. ;-----------------------------------------------------------------------
  973.  
  974. [RegistryConstants]
  975.  
  976.     MaskAllAccess          = 33554432
  977.     NoTitle                = 0
  978.     RegLastError           = $(!REG_ERROR_SUCCESS)
  979.  
  980. ;-----------------------------------------------------------------------
  981. ; ROUTINE:      DoRegistryModifications
  982. ;
  983. ; DESCRIPTION:  Does the registry modifications needed.
  984. ;               - Sets the compatibility flags for the postcript stuff
  985. ;               - Creates an entry for the WinNT software.
  986. ;
  987. ; INPUTS:       $0:  CSD Version #
  988. ;
  989. ; OUTPUTS:      $R0: Status: STATUS_SUCCESSFUL
  990. ;                            STATUS_FAILED
  991. ;
  992. ;------------------------------------------------------------------------
  993.  
  994. [DoRegistryModifications]
  995.  
  996.     set Status = STATUS_FAILED
  997.     read-syms RegistryConstants
  998.  
  999.     ;
  1000.     ; Modify the compatibility flags..
  1001.     ;
  1002.     set KeyPath   = { +
  1003.                      {SOFTWARE,       $(NoTitle), $(MaskAllAccess)}, +
  1004.                      {Microsoft,      $(NoTitle), $(MaskAllAccess)}, +
  1005.                      {"Windows NT",   $(NoTitle), $(MaskAllAccess)}, +
  1006.                      {CurrentVersion, $(NoTitle), $(MaskAllAccess)}, +
  1007.                      {WOW,            $(NoTitle), $(MaskAllAccess)}, +
  1008.                      {Compatibility,  $(NoTitle), $(MaskAllAccess)}  +
  1009.                     }
  1010.  
  1011.     ;
  1012.     ; Form the value info structures for the WinNT entry
  1013.     ;
  1014.  
  1015.     set KeyValues = { +
  1016.                      {PM4,  $(NoTitle), $(!REG_VT_SZ), "0x02004000" }, +
  1017.                      {main123W, $(NoTitle), $(!REG_VT_SZ), "0x00004000" }, +
  1018.                      {FH3, $(NoTitle), $(!REG_VT_SZ), "0x00004000" }  +
  1019.                     }
  1020.  
  1021.  
  1022.     shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  1023.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1024.         goto endCSDVersionCreate
  1025.     endif
  1026.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1027.         goto endCSDVersionCreate
  1028.     else
  1029.         CloseRegKey $($R1)
  1030.     endif
  1031.     ;
  1032.     ; Form the path up to the version key
  1033.     ;
  1034.  
  1035.     set KeyPath   = { +
  1036.                      {SOFTWARE,       $(NoTitle), $(MaskAllAccess)}, +
  1037.                      {Microsoft,      $(NoTitle), $(MaskAllAccess)}, +
  1038.                      {"Windows NT",   $(NoTitle), $(MaskAllAccess)}, +
  1039.                      {CurrentVersion, $(NoTitle), $(MaskAllAccess)}  +
  1040.                     }
  1041.  
  1042.     ;
  1043.     ; Form the value info structures for the WinNT entry
  1044.     ;
  1045.  
  1046.     set KeyValues = { +
  1047.                      {CSDVersion, $(NoTitle), $(!REG_VT_DWORD), $($0) } +
  1048.                     }
  1049.  
  1050.  
  1051.     shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  1052.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1053.         goto endCSDVersionCreate
  1054.     endif
  1055.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1056.         goto endCSDVersionCreate
  1057.     else
  1058.         CloseRegKey $($R1)
  1059.     endif
  1060.  
  1061.     set Status = STATUS_SUCCESSFUL
  1062. endCSDVersionCreate = +
  1063.     Return $(Status)
  1064.  
  1065.  
  1066.  
  1067.  
  1068. ;-----------------------------------------------------------------------
  1069. ; ROUTINE:      GetCSDVersion
  1070. ;
  1071. ; DESCRIPTION:  Reads the software entry to find out what the CSD Patch Version
  1072. ;               is
  1073. ;
  1074. ; INPUTS:       $0:  None
  1075. ;
  1076. ; OUTPUTS:      $R0: Status: STATUS_SUCCESSFUL
  1077. ;                            STATUS_FAILED
  1078. ;
  1079. ;               $R1: CSDVersion
  1080. ;
  1081. ;------------------------------------------------------------------------
  1082.  
  1083. [GetCSDVersion]
  1084.  
  1085.     set Status = STATUS_SUCCESSFUL
  1086.     read-syms RegistryConstants
  1087.     set CSDVersion = 0
  1088.  
  1089.     ;
  1090.     ; Open the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
  1091.     ; key
  1092.  
  1093.     set KeyName = "Software\Microsoft\Windows NT\CurrentVersion"
  1094.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(!REG_KEY_READ) KeyHandle
  1095.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1096.         Debug-Output "REGISTRY.INF: Couldn't open windows nt software key for read access"
  1097.         goto end_GetCSDVersion
  1098.     endif
  1099.  
  1100.     ;
  1101.     ; read the sourcepath entry
  1102.     ;
  1103.  
  1104.     GetRegValue $(KeyHandle) "CSDVersion" CSDVersionValue
  1105.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1106.         CloseRegKey $(KeyHandle)
  1107.         goto end_GetCSDVersion
  1108.     endif
  1109.  
  1110.     set CSDVersion =  *($(CSDVersionValue), 4)
  1111.     CloseRegKey $(KeyHandle)
  1112. end_GetCSDVersion = +
  1113.     Return $(Status) $(CSDVersion)
  1114.  
  1115. ;-----------------------------------------------------------------------
  1116. ; ROUTINE:      QueryOkCancel
  1117. ;
  1118. ; DESCRIPTION:  This routine lets the user query OK / Cancel giving OK as
  1119. ;               default
  1120. ;
  1121. ; INPUTS:       $0:  MessageText.
  1122. ;
  1123. ; OUTPUTS:      $R0: STATUS:   STATUS_SUCCESSFUL |
  1124. ;                              STATUS_NOLANGUAGE
  1125. ;                              STATUS_FAILED
  1126. ;
  1127. ;               $R1: DLGEVENT: OK | CANCEL
  1128. ;
  1129. ;------------------------------------------------------------------------
  1130.  
  1131. [QueryOkCancel]
  1132.  
  1133.     set DlgText = $($0)
  1134.     read-syms QueryOKCancelDlg$(!STF_LANGUAGE)
  1135.  
  1136.     ui start "SetupMessage"
  1137.     ifstr(i) $(DLGEVENT) == "OK"
  1138.         set Status     = STATUS_SUCCESSFUL
  1139.         set UserAction = $(DLGEVENT)
  1140.  
  1141.     else-ifstr(i) $(DLGEVENT) == "CANCEL"
  1142.         set Status     = STATUS_SUCCESSFUL
  1143.         set UserAction = $(DLGEVENT)
  1144.     else
  1145.         set Status     = STATUS_FAILED
  1146.         set UserAction = "CANCEL"
  1147.     endif
  1148.     Return $(Status) $(UserAction)
  1149.  
  1150. [ProductType]
  1151. STF_PRODUCT  = WinNT
  1152. STF_PLATFORM = I386
  1153.  
  1154. ;
  1155. ; MEDIA AND FILE DESCRIPTIONS
  1156. ;
  1157.  
  1158. [Source Media Descriptions]
  1159.     1  = "Windows NT 3.1 Update Disk #1"  , TAGFILE = disk1
  1160.     2  = "Windows NT 3.1 Update Disk #2"  , TAGFILE = disk2
  1161.     3  = "Windows NT 3.1 Update Disk #3"  , TAGFILE = disk3
  1162.     4  = "Windows NT 3.1 Update Disk #4"  , TAGFILE = disk4
  1163.     5  = "Windows NT 3.1 Update Disk #5"  , TAGFILE = disk5
  1164.     6  = "Windows NT 3.1 Update Disk #6"  , TAGFILE = disk6
  1165.     7  = "Windows NT 3.1 Update Disk #7"  , TAGFILE = disk7
  1166.     8  = "Windows NT 3.1 Update Disk #8"  , TAGFILE = disk8
  1167.     9  = "Windows NT 3.1 Update Disk #9"  , TAGFILE = disk9
  1168.     10 = "Windows NT 3.1 Update Disk #10" , TAGFILE = disk10
  1169.  
  1170. [Strings]
  1171.  
  1172.  
  1173.     String1 = "This update disk cannot be used on this platform."
  1174.     String2 = "Setup failed to update the system."
  1175.     String3 = "Setup has successfully updated your system."
  1176.     String4 = "You do not have permission to update the system.  Please contact your system administrator."
  1177.     String5 = "Setup failed to setup your updated files for secure operation."
  1178.     String6 = "No floppy disk drive was found on your computer. "+
  1179.               "Setup cannot modify the Emergency Repair Disk."
  1180.  
  1181.     String7 =  "If you created an Emergency Repair Disk during the initial installation"+
  1182.                " of Windows NT, please insert it into Drive "
  1183.  
  1184.     String10 = " and click OK to update the repair disk.  If you cannot locate the repair"+
  1185.                " disk, select Cancel and Setup will complete the installation."
  1186.  
  1187.     String8 = "Setup has detected that the version of the system installed is "+
  1188.               "newer than the update you are applying to it.  The update can render "+
  1189.               "your system unstartable.  Press OK if you still wish to continue "+
  1190.               "or press Cancel to exit Setup."
  1191.  
  1192.     ; PLEASE NOTE:
  1193.     ; Change the language mentioned in variable String9 to the language
  1194.     ; you are localizing to.  That is if the localized language is Spanish,
  1195.     ; the word English should be changed to Espanol (?).
  1196.     ;
  1197.  
  1198.     String9 = "Setup is going to update your Windows NT system with the English "+
  1199.               "version of the update program.  If you wish to cancel the update "+
  1200.               "process, please press Cancel or press OK to continue."
  1201.  
  1202.     String11 = "Setup couldn't find the setup.log file in your windows directory. "+
  1203.                "Setup cannot proceed to update your system.  Please copy the repair.inf "+
  1204.                "file from your Emergency Repair Disk to your windows directory under the "+
  1205.                "name setup.log and restart the update."
  1206.     String12 = "Setup has not updated your system.  If you wish to update your "+
  1207.                "system please run the update utility again."
  1208.  
  1209.     String13a = "Not enough hard disk space to run Setup.  Setup needs at least "
  1210.     String13b = "MB of free hard disk space on "
  1211.     String13c = " before it can be run.  Delete some"+
  1212.                 " files and run the Update program again."
  1213.  
  1214.     String14  = "Setup cannot update your Windows NT files because it could not "+
  1215.                 "determine your product type.  Your registry may be corrupt."
  1216.  
  1217.     Billboard1 = "Please wait..."
  1218.     Billboard2 = "Please wait while the files to be updated are determined..."
  1219.     Billboard3 = "Please wait while the Emergency Repair Disk is updated..."
  1220.  
  1221. [ProgressCopyENG]
  1222.     ProCaption   = "Windows NT Setup"
  1223.     ProCancel    = "Cancel"
  1224.     ProCancelMsg = "The Windows NT 3.1 files are not completely updated.  Are you sure you want "+
  1225.                    "to cancel copying files?"
  1226.     ProCancelCap = "Setup Message"
  1227.     ProText1     = "Copying:"
  1228.     ProText2     = "To:"
  1229.  
  1230.  
  1231. [SetupDoneDlgENG]
  1232.     Caption     = "Windows NT Setup"
  1233.     DlgText     = "Windows NT 3.1 has been updated. If you change or add "+
  1234.                   "any components to your system, you will need to "+
  1235.                   "reapply the update."$(!LF)$(!LF)+
  1236.                   "Remove disks from the floppy disk drives and "+
  1237.                   "choose Restart Computer to run the updated system."
  1238.  
  1239.     Reboot      = "&Restart Computer"
  1240.     Windows     = "E&xit to Windows NT"
  1241.     DlgType     = "Info"
  1242.     DlgTemplate = "REBOOT"
  1243.  
  1244. [QueryOKCancelDlgENG]
  1245.     STF_MB_TITLE = "Setup Message"
  1246.  
  1247.     ;no translation needed after this
  1248.  
  1249.     DlgType      = "MessageBox"
  1250.     STF_MB_TEXT  = $(DlgText)
  1251.     STF_MB_TYPE  = 2
  1252.     STF_MB_ICON  = 4
  1253.     STF_MB_DEF   = 1
  1254.